import Index from '@/pages/frontend/index.vue'
import Login from '@/pages/admin/login.vue'
import AdminIndex from '@/pages/admin/index.vue'
import Admin from '@/layouts/admin/admin.vue'
import AdminArticleList from '@/pages/admin/article-list.vue'
import AdminCategoryList from '@/pages/admin/category-list.vue'
import AdminTagList from '@/pages/admin/tag-list.vue'
import AdminBlogSetting from '@/pages/admin/blog-settings.vue'
import ArchiveList from '@/pages/frontend/archive-list.vue'
import CategoryList from '@/pages/frontend/category-list.vue'
import CategoryArticleList from '@/pages/frontend/category-article-list.vue'
import TagList from '@/pages/frontend/tag-list.vue'
import TagArticleList from '@/pages/frontend/tag-article-list.vue'
import ArticleDetail from '@/pages/frontend/article-detail.vue'
import NotFound from '@/pages/frontend/404.vue'
import AdminCommentList from '@/pages/admin/comment-list.vue'
import AdminUserList from '@/pages/admin/user-list.vue'
import Visualization from '@/pages/admin/visualization.vue'
import System from '@/pages/admin/system.vue'
import Hot from '@/pages/frontend/hot.vue'
import AdminWikiList from '@/pages/admin/wiki-list.vue'
import WikiList from '@/pages/frontend/wiki-list.vue'
import WikiDetail from '@/pages/frontend/wiki-detail.vue'
import { createRouter, createWebHashHistory } from 'vue-router'

// 统一在这里声明所有路由
const routes = [
  {
    path: '/', // 路由地址
    component: Index, // 对应组件
    meta: {
      // meta 信息
      title: '码海航行' // 页面标题
    }
  },
  {
    path: '/category/list', // 分类页
    component: CategoryList,
    meta: { // meta 信息
        title: '分类'
    }
  },
  {
    path: '/tag/list', // 标签列表页
    component: TagList,
    meta: { // meta 信息
        title: '标签'
    }
  },
  {
    path: '/archive/list', // 归档页
    component: ArchiveList,
    meta: { // meta 信息
        title: '归档'
    }
  },
  {
    path: '/wiki/list', // 知识库
    component: WikiList,
    meta: {
        title: '知识库'
    }
  },
  {
    path: '/hot', // 热搜页
    component: Hot,
    meta: { // meta 信息
        title: '热搜'
    }
  },
  {
    path: '/category/article/list', // 分类文章列表页
    component: CategoryArticleList,
    meta: { // meta 信息
        title: '分类文章'
    }
  },
  {
    path: '/tag/article/list', // 标签文章列表页
    component: TagArticleList,
    meta: { // meta 信息
        title: '标签文章'
    }
  },
  {
    path: '/article/:articleId', // 文章详情页
    component: ArticleDetail,
    meta: { // meta 信息
        title: '文章详情'
    }
  },
  {
    path: '/wiki/:wikiId', // 知识库详情页
    component: WikiDetail,
    meta: {
        title: '知识库详情'
    }
  },
  {
    path: '/:pathMatch(.*)*',
    name: 'NotFound',
    component: NotFound,
    meta: {
        title: '404 页'
    }
  },
  {
    path: '/login', // 登录页
    component: Login,
    meta: {
      title: '码海航行登录页'
    }
  },
  {
    path: "/admin", // 后台首页
    component: Admin, // 对应 admin.vue 布局文件
    // 使用到 admin.vue 布局的，都需要放置在其子路由下面
    children: [
      {
        path: "/admin/index",
        component: AdminIndex,
        meta: {
            title: '仪表盘'
        }
      },
      {
          path: "/admin/article/list",
          component: AdminArticleList,
          meta: {
              title: '文章管理'
          }
      },
      {
          path: "/admin/category/list",
          component: AdminCategoryList,
          meta: {
              title: '分类管理'
          }
      },
      {
          path: "/admin/tag/list",
          component: AdminTagList,
          meta: {
              title: '标签管理'
          }
      },
      {
        path: "/admin/wiki/list",
        component: AdminWikiList,
        meta: {
            title: '知识库管理'
        }
      },
      {
        path: "/admin/comment/list",
        component: AdminCommentList,
        meta: {
            title: '评论管理'
        }
      },
      {
        path: "/admin/user/list",
        component: AdminUserList,
        meta: {
            title: '用户管理'
        }
      },
      {
          path: "/admin/blog/setting",
          component: AdminBlogSetting,
          meta: {
              title: '博客设置'
          }
      },
      {
        path: "/admin/system",
        component: System,
        meta: {
            title: '监控中心'
        }
      },
    ]
  },
  {
    path: "/admin/visualization",
    component: Visualization,
    meta: {
        title: '可视化大屏'
    }
  },

]

// 创建路由
const router = createRouter({
  // 指定路由的历史管理方式，hash 模式指的是 URL 的路径是通过 hash 符号（#）进行标识
  history: createWebHashHistory(),
  // routes: routes 的缩写
  routes,
  // 每次切换路由后，页面滚动到顶部
  scrollBehavior() {
    return {
      top: 0
    }
  }
})

// ES6 模块导出语句，它用于将 router 对象导出，以便其他文件可以导入和使用这个对象
export default router
